require(['jquery', 'jquery.validate'], function($) {
    $(function() {
        //alert(validate)


        $('#J-register-form').validate({
            rules: {
                username: {
                    required: true,
                    validUserName: true,
                    minlength: 2,
                    maxlength: 20,
                    remote: {
                        url: '/auth/validate?type=username',
                        type: 'POST',
                        dataType: 'json',
                        data: {
                            username: function() {
                                return $("#J-register-username").val();
                            },
                            csrf_test_name: $('#register-csrfname').val()
                        },

                        /**
                         * remote 只接受字符串"true"或"false",不能满足所有要求
                         * dataFilter用来处理自定义message,
                         * 需要将JSON字符串转换为JSON
                         * 但是返回值必须是带引号的字符串
                         * https://zhuanlan.zhihu.com/p/27117793
                         */
                        dataFilter: function(data, type) {
                            var _val = null;
                            var data = JSON.parse(data);
                            switch (data.code) {
                                case -3:
                                    _val = '"参数不合法"';
                                    break;

                                case -4:
                                    _val = '不合法的用户名';
                                    break;

                                case -2:
                                    _val = '"用户名已被占用"';
                                    break;

                                case 1:
                                    _val = true;
                            }

                            return _val;
                        }
                    }
                },
                email: {
                    required: true,
                    email: true,
                    remote: {
                        url: '/auth/validate?type=email',
                        type: 'post',
                        dataType: 'json',
                        data: {
                            email: function() {
                                return $("#J-register-email").val();
                            }
                        },
                        /**
                         * remote 只接受字符串"true"或"false",不能满足所有要求
                         * dataFilter用来处理自定义message,
                         * 需要将JSON字符串转换为JSON
                         * 但是返回值必须是带引号的字符串
                         * https://zhuanlan.zhihu.com/p/27117793
                         */
                        dataFilter: function(data, type) {
                            var _val = null;
                            var data = JSON.parse(data);
                            switch (data.code) {
                                case -3:
                                    _val = '"参数不合法"';
                                    break;

                                case -4:
                                    _val = '不合法的邮箱';
                                    break;

                                case -2:
                                    _val = '"邮箱已被占用"';
                                    break;

                                case 1:
                                    _val = true;
                            }

                            return _val;
                        }

                    }
                },
                password: {
                    required: true,
                    validPassword: true,
                    minlength: 6,
                    maxlength: 30,
                }

            },
            messages: {
                username: {
                    required: '请输入用户昵称',
                    minlength: '昵称不能少于2个字符',
                    maxlength: '昵称不能超过20个字符'
                },
                email: {
                    required: '请输入注册邮箱',
                    email: '请输入合法的邮箱'
                },
                password: {
                    required: '请设置账号密码',
                    minlength: '密码长度不能小于6个字符',
                    maxlength: '密码长度不能超过30个字符'
                },


            },

            //表单项验证通过提示

            //表单整体通过回调事件
            submitHandler: function(form) {
                form.submit();
            }


        });


        $('#J-login-form').validate({
            rules: {

                email: {
                    required: true,
                    email: true,
                },
                password: {
                    required: true,
                    validPassword: true,
                    minlength: 6,
                    maxlength: 30,
                }

            },
            messages: {
                email: {
                    required: '请输入注册邮箱',
                    email: '请输入合法的邮箱'
                },
                password: {
                    required: '请设置账号密码',
                    minlength: '密码长度不能小于6个字符',
                    maxlength: '密码长度不能超过30个字符'
                },


            },

            //表单项验证通过提示

            //表单整体通过回调事件
            submitHandler: function(form) {
                form.submit();
            }


        });




        //添加自定义校验规则
        $.validator.addMethod('validUserName', function(value, element, params) {
            //昵称规则：汉字、数字、字母、下划线不能以下划线开头和结尾
            //数字开头，后面至少一位非汉字字母，也可以跟一个下划线，最后还不能是下划线
            //汉字字母开头，后面可以跟一个下划线，N个汉字和字母数字

            var usernameReg = /^(?!\d+$)[\u4e00-\u9fa5a-z0-9]+_?[\u4e00-\u9fa5a-z0-9]+$/i;

            if (usernameReg.test(value)) {
                return true;
            } else {
                return false;
            }

        }, '昵称可以包含汉字、字母，不能以下划线开头结尾，不能为纯数字，长度为2-20字符');



        //添加自定义校验规则
        $.validator.addMethod('validPassword', function(value, element, params) {

            var passwordReg = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,20}$/;

            if (passwordReg.test(value)) {
                return true;
            } else {
                return false;
            }

        }, '必须包含大小写字母和数字，可以使用特殊字符，长度在6-30之间');



        $('#J-switchtab').on('click', '.tab-trigger', function() {
            var _index = $(this).index();

            $(this).addClass('switchable')
                .siblings()
                .removeClass('switchable');

            $('#J-switchtab .tab-content')
                .eq(_index)
                .addClass('switchable')
                .siblings()
                .removeClass('switchable');
        });

    });
});
3